#define _CRT_SECURE_NO_WARNINGS 1



#include <stdio.h>
//#include <stdbool.h>
//bool pali(char* s)
//{
//	int sz = strlen(s);
//	char t[20];
//	int i,j = 0;
//	for (i = sz - 1; i >= 0; i--)
//	{
//		t[j++] = s[i];
//	}
//	t[j] = '\0';
//	if (strcmp(s, t) == 0)
//		return true;
//	else
//		return false;
//}
//
//int main()
//{
//	char s[20];
//	scanf_s("%s", s);
//
//	printf("%s",s);
//
//
//	
//
//	return 0;
//}



//#include <stdio.h>
//#include <string.h>
//int main()
//{
//    char s[21], a[21], b[21], c[21];
//    int i, j, k, n, t = 0, m, h;
//    gets(s);
//    gets(a);
//    gets(b);
//    int n1 = strlen(s);
//    int n2 = strlen(a);
//    int n3 = strlen(b);
//    for (i = n2 - 1, j = n3 - 1, k = n1 - 1; i >= 0 && j >= 0; i--, j--, k--)
//    {
//        for (n = 1, t = 0, m = 0; n <= 9; n++)
//        {
//            if (a[i] + b[j] >= n * s[k] && a[i] + b[j] < (n + 1) * s[k])
//            {
//                c[t] = a[i] + b[j] + m - n * s[k];
//                t++;
//                m = n;
//            }
//        }
//    }
//    h = m;
//    if (n3 < n2)
//    {
//        for (i = n2 - n3, k = n1 - n3; i >= 0; i--, k--)
//        {
//            for (n = 1, t = 0, m = h; n <= 9; n++)
//            {
//                if (a[i] >= n * s[k] && a[i] < (n + 1) * s[k])
//                    c[t] = a[i] + m - n * s[k];
//                t++;
//                m = n;
//            }
//        }
//    }
//    if (n3 > n2)
//    {
//        for (i = n3 - n2, k = n1 - n2; i >= 0; i--, k--)
//        {
//            for (n = 1, t = 0, m = h; n <= 9; n++)
//            {
//                if (b[i] >= n * s[k] && b[i] < (n + 1) * s[k])
//                    c[t] = b[i] + m - n * s[k];
//                t++;
//                m = n;
//            }
//        }
//    }
//    for (i = t - 1; i >= 0; i--)
//    {
//        printf("%c", c[i]);
//    }
//    return 0;
//}


//#include<stdio.h>
//#include<math.h>
//int main()
//{
//
//    double x0 = 1.5;
//    double x, f, fd;
//
//    do
//    {
//        x = x0;
//        f = 2.0 * x * x * x - 4.0 * x * x + 3.0 * x - 6.0;
//        fd = 2.0 * x * x - 4.0 * x + 3.0;
//        x0 = x - f / fd;
//    } while (fabs(x - x0) >= 1e-5);
//    printf("%f\n", x0);
//
//
//    return 0;
//}


long long solve(int* A, int Alen) {
	for (int i = 0; i < Alen-1; i++) {
		for (int j = i + 1; j < Alen; j++) {
			if (A[i] > A[j]) {
				int temp = A[i];
				A[i] = A[j];
				A[j] = temp;
			}
		}
	}
	//for (int i = 0; i < Alen; i++) {
	//	printf("%d ", A[i]);
	//}
	if (A[Alen - 1] < 0 || A[0]>0) {
		double n3 = (double)(((double)A[Alen - 1] * A[Alen - 2]) * A[Alen - 3]);
		return n3;
	}
	else {
		long long n1 = (long long)A[0] * A[1] * A[Alen - 1];
		long long n2 = (long long)A[Alen - 1] * A[Alen - 2] * A[Alen - 3];
		if (n1 > n2) {
			return n1;
		}
		else {
			return n2;
		}
	}
	// write code here
}

int main()
{
	int arr[10] = { 0 };
	for (int i = 0;i < 10; ++i)
	{
		scanf("%d", &arr[i]);
	}
	
	printf("%lld", solve(arr, 10));
	return 0;
}